home *** CD-ROM | disk | FTP | other *** search
/ Developer Helper 1: Phil & Dave's Excellent CD / Excellent CD HFS.raw / Moof / Goodies / HyperCard Goodies / HyperCard Dev. ToolKit / XCMD.Sources / portHasChar.p < prev    next >
Text File  |  1987-08-17  |  2KB  |  72 lines

  1. {$R-}
  2.  
  3. (*
  4.     SPortHasChar(port number) -- Return "true" if the serial port has data; "false" otherwise.
  5.     By Harry Chesley.  DO NOT call the author!  Contact Apple Developer 
  6.     Support on AppleLink "MacDTS" or on MCI "MacTech".
  7.  
  8.     ©Apple Computer, Inc. 1987
  9.     All Rights Reserved.
  10.  
  11.     To compile and link this file using Macintosh Programmer's Workshop,
  12.  
  13.     pascal -w portHasChar.p
  14.     link -m ENTRYPOINT -o HyperTerm -rt XFCN=0 -sn Main=SPortHasChar portHasChar.p.o "{MPW}"Libraries:interface.o
  15.     
  16. *)
  17.  
  18. {$S SPortHasChar }     { Segment name must be the same as the command name. }
  19.  
  20. unit DummyUnit;
  21.  
  22. interface
  23.  
  24. uses MemTypes, QuickDraw, OSIntf, HyperXCmd;
  25.  
  26. procedure EntryPoint(paramPtr: XCmdPtr);
  27.     
  28. implementation
  29.  
  30. type
  31.  
  32. Str31 = String[31];
  33.  
  34. procedure SPortHasChar(paramPtr: XCmdPtr); forward;
  35.  
  36. procedure EntryPoint(paramPtr: XCmdPtr);
  37.  
  38.     begin
  39.         SPortHasChar(paramPtr);
  40.     end;
  41.  
  42. procedure SPortHasChar(paramPtr: XCmdPtr);
  43.  
  44.     var portNumber: integer;
  45.         inPort: integer;
  46.         str: Str255;
  47.         l: longInt;
  48.  
  49.     {$I XCmdGlue.inc}
  50.  
  51.     procedure Fail(errMsg: Str255); { set theResult and quit }
  52.         begin
  53.             paramPtr^.returnValue := PasToZero(errMsg);
  54.             exit(SPortHasChar);
  55.         end;
  56.  
  57.     begin
  58.         if paramPtr^.paramCount <> 1 then Fail('parameter count is not 1');
  59.  
  60.         ZeroToPas(paramPtr^.params[1]^,str);        { First parameter is port number. }
  61.         portNumber := StrToNum(str);
  62.         if (portNumber < 1) or (portNumber > 2) then Fail('invalid port number');
  63.  
  64.         if portNumber = 1 then inPort := -6
  65.         else inPort := -8;
  66.         if SerGetBuf(inPort,l) <> noErr then Fail('SerGetBuf failed');
  67.         if l = 0 then paramPtr^.returnValue := PasToZero('false')
  68.         else paramPtr^.returnValue := PasToZero('true');
  69.     end;
  70.  
  71. end.
  72.